package com.objectsdemo;

import java.util.Objects;

public class ObjectsDemo1 {
    public static void main(String[] args) {
        /*
        public static boolean equals(Object a, object b) 先做非空判断，比较两个对象
        public static boolean isNul1(Object obj) 判断对象是否为nul1，为null返回true ,反之
        public static boolean nonNul1(Object obj) 判断对象是否为nul1，跟isNul1的结果相反
         */
        //1.创建对象
        Student student1 = new Student("张三",23);
        Student student2 = new Student("张三",23);
        Student student3 = null;
        //2.equals(Object a, object b) 先做非空判断比较两个对象的属性值是否相同
        //boolean flag = student2.equals(student1);
        boolean flag = Objects.equals(student1, student2);
        System.out.println(flag);
        System.out.println("=========");
        //细节:
        //1.方法的底层会判断student1是否为null，如果为null，直接返回false
        //2.如果student1不为null，那么就利用student1再次调用equals方法
        //3.此时student1是student类型，所以最终还是会调用student中的equals方法。
        // 如果没有重写，比较地址值，
        // 如果重写了，就比较属性值。

        //isNul1(Object obj) 判断对象是否为nul1，为null返回true ,反之
        System.out.println(Objects.isNull(student1));
        System.out.println(Objects.isNull(student3));
        System.out.println("=========");

        //nonNul1(Object obj) 判断对象是否为nul1，跟isNul1的结果相反
        System.out.println(Objects.nonNull(student1));
        System.out.println(Objects.nonNull(student3));
    }
}
